<?php namespace Home\Controller; 

use Hdphp\Controller\Controller;

//前台首页控制器
class ListController extends Controller{
	private $model;
	public function __init(){
		$this->model = new \Common\Model\Goods;
	}
	/**
	 * [index 商品列表页展示]
	 * [使用到的是goods表，且需要关联band(品牌表)]
	 * [就是需要选中的一栏商品中所有的属性、规格]
	 * [得记得将其进行筛分.]
	 * @return [type] [description]
	 */
	public function index(){
		
		// ********************处理筛选条件处********************
		// 需要用到的是目前所选的商品所属的类型，将该类型的所有属性及规格都给提取出来，
		// 传过来的值有$gid
		// p(Q('get.gid'));
		$gid = Q('get.gid');
		// p($gid);
		// 取得gid所对应的tid
		$tid = $this->model->where(array('gid'=>$gid))->pluck('tid');//取到所对应的tid
		// p($tid);
		//查找对应的类型表Type表
		//采用关联，关联goods与type表
		$data = $this->model
			  ->join('type','shop_goods.tid','=','shop_type.tid')
			  ->join('type_attr','shop_type_attr.type_tid','=','shop_type.tid')
			  ->where(array('shop_type_attr.type_tid'=>$tid))
			  ->get();//筛选出对应的类型属性表
		// p($data);
		// ****************处理商品对应的品牌************
		foreach ($data as $k => $v) {
			$bids[$v['bid']] = $v['bid'];
		}
		// p($bids);
		$bids = implode(',',$bids);
		// p($bids);
		// 获取对应的商品品牌，将其实例化进行获取到品牌
		$BrandModel = new \Common\Model\Brand;
		$brandData = $BrandModel->where("bid in($bids)")->lists('bname');
		// p($brandData);//获取到品牌的数据，然后将其进行压缩到下面的数组中
		$this->assign('brandData',$brandData);
		// ****************处理商品属性及其规格**********
		foreach ($data as $k => $v) {
			$gids[$v['gid']] = $v['gid'];
		}
		$gids = implode(',', $gids);
		// p($gids);
		$GAttrModel = new \Common\Model\GAttr;
		$GAttrData = $GAttrModel->where("gid in ($gids)")->get();
		// p($GAttrData);
		//获取商品的商品都是同一类型的商品属性，然后在将其进行组合。
		foreach ($GAttrData as $k => $v) {
			$aa[$v['type_taid']][] = $v['gtvalue'];
			$aa[$v['type_taid']] = array_unique($aa[$v['type_taid']]);
		}
		// p($GAttrData);
		// p($aa);
		$TypeAttrModel = new \Common\Model\TypeAttr;
		foreach ($aa as $key => $value) {
			// p($value);
			$aaa[$key] = $TypeAttrModel->where(array('taid'=>$key))->lists('taname');
			// $aaa[$key]=$value;
		}
		// p($aaa);
		foreach ($aaa as $key => $value) {
			// p($aaa[$key]);
			foreach ($aa as $k => $v) {
				if($key==$k){
					$aaa[$key][] = $v;
				}
			}
		}
		// p($aaa);die;
		$this->assign('aaa',$aaa);//分配的是属性和规格对应的taname
		//********************做筛选条件的判断***********************
		// 1、商品品牌的筛选(采用ajax进行筛选)
		
		// *******************分配商品数据，将对应的商品给循环出来*************
		//获取到的是商品的信息
		//这儿筛选的gid条件是从上面得来的(但有个判断条件，若没有筛选的话，就用上面下来的gids，若有筛选条件，则用筛选条件得来的gids。做三元表达式判断。)
		$GoodsData = $this->model->where("gid in ($gids)")->get();  
		$brandModel = new \Common\Model\Brand;
		$brandData = $brandModel->get();
		// p($brandData);
		// 分配gid到页面中去，目的是为了在异步的时候可以接收到页面的gid信息，异步判断的时候所需要的模型实例化。
		// p($gids);
		$this->assign('gids',$gids);
		// 这儿处理的是品牌表的关联
		foreach ($GoodsData as $k => $v) {
			foreach ($brandData as $key => $value) {
				if($value['bid']==$v['bid']){
					$GoodsData[$k]['bname'] = $value['bname'];
				}
			}			
		}
		// p($GoodsData);
		$this->assign('GoodsData',$GoodsData);
		//获取所有的type表的值  需要跟cate进行关联
		$TypeModel = new \Common\Model\Type;
		$TypeData = $TypeModel
		          ->join('cate','tid','=','type_tid')
		          ->get();
		// p($TypeData);
		$NewData = array();
		$new = array();
		foreach ($TypeData as $k => $v) {
			$NewData[$v['tname']][] = $v['cname'];
		}
		// p($NewData);
		$this->assign('NewData',$NewData);
		$this->display();
	}

	//处理品牌的ajax方法
	public function getBrandAjax(){
		$data = $_POST;
		// p($data);die;
		$bname = $_POST['bname'];
		$gids = $_POST['gids'];
		$gtvalue = $_POST['gtvalue'];
		// $_SESSION['list'][]=$_POST['gtvalue'];
		// unset($_SESSION['list']);
		p($_SESSION);
		// p($_POST);
		// p($gtvalue);die;//可以打印出需要的数据
		// p($gids);
		// p($bname);//获取到需要的数据.
		// die;
		// 1、处理品牌表brand表,找到bname = $_POST所对应的bid，并找到在$gids下的所有品牌为bid的商品。
		$brandModel = new \Common\Model\Brand;
		$bids = $brandModel->where(array('bname'=>"$bname"))->pluck('bid');
		// p($bids);得到需要的bid，接下来需要找的就是数据库中的商品表(goods表)，找到所有商品为$gid的，并且商品bid为$bids的商品。
		// p($gid);
		$GoodsData = $this->model
		           ->join('brand','shop_brand.bid','=','shop_goods.bid')
		           ->where("gid in ($gids)")
		           ->where(array('shop_goods.bid'=>$bids))
		           ->get(); 
		// p($GoodsData);
		// 这儿获取的是商品属性的问题，就是在gids这个大环境下，找一个符合该属性的商品。且符合上面品牌问题的商品.
		// 找到
		
		$GAttrModel = new \Common\Model\Gattr;
		$GAttrData = $GAttrModel
		           ->where(array('gtvalue'=>"$gtvalue"))
		           ->where("gid in ($gids)")
		           ->lists('gid');
		// p($GAttrData);die;
		// 将获取的数据进行整合成一个大数组，在将其返回到页面中去。
		$temp = array(
			'bname' =>$bname,
			'GoodsData'=>$GoodsData
		);
		// p($GoodsData);
		// p($bname);die;
		// p($temp);
		View::ajax($temp);
	}
	/**
	 * [getTavalueAjax 处理商品属性问题的]
	 * @return [type] [description]
	 */
	// public function getTavalueAjax(){
	// 	$data = $_POST;
	// 	// p($data);//可以获取到点击的单个属性值，并且还有传过来的gid值，
		
	// }

}